﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Configuration;


namespace WebApplication1.Account
{
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RegisterHyperLink.NavigateUrl = "RegistroUsuarios.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
        }

        protected void LoginUser_Authenticate(object sender, AuthenticateEventArgs e)
        {
            bool Autenticado = false;
            Autenticado = LoginCorrecto(LoginUser.UserName, LoginUser.Password);
            e.Authenticated = Autenticado; if (Autenticado)
            {
                FormsAuthentication.SetAuthCookie(LoginUser.UserName, false);
                Response.Redirect("admin/Default.aspx");
                //Server.Transfer("admin/Default.aspx");
                //Response.Redirect("/Admin/Default.aspx");
            }
        }

        private bool LoginCorrecto(string Usuario, string Contrasena)
        {
            bool retorno = false;
            Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
            Common.FE_Symmetric objSymetric = new Common.FE_Symmetric();
            string strClaveEncriptada = objSymetric.EncryptData(ConfigurationManager.AppSettings["EncryptionKey"].ToString(), Contrasena);

            var datosUsuarioExiste = (
                                from a in contexto.ADM_USUARIOs
                                where object.Equals(a.USU_USUARIO, Usuario) && object.Equals(a.USU_CLAVE, strClaveEncriptada)
                                select a
                               );
            int intOpcion = 0;
            string strEstadoUsuario = "";
            string strEstadoIntentosFallidos = "";
            string strNombreusuario = "";
            foreach (var v in datosUsuarioExiste)
            {
                strEstadoUsuario = v.USU_ESTADO.ToString();
                strEstadoIntentosFallidos = v.USU_INTENTOS_FALLIDOS_INGRESO.ToString();
                strNombreusuario = v.USU_CORREO_ELECTRONICO;
                Session["USU_USUARIO"] = v.USU_CORREO_ELECTRONICO;
                Session["USU_NOMBRE"] = v.USU_NOMBRE;
                intOpcion = 1;

                //StrUsuCorreoElectronico = v.USU_CORREO_ELECTRONICO;
                Session["USU_ID"] = v.USU_ID;
                //Session["USU_CORREO_ELECTRONICO"] = v.USU_CORREO_ELECTRONICO;
            }

            if (intOpcion == 0)
            {
                msgBox1.alert("Usuario o contraseña invalida");
                retorno = false;
                //FailureText.Text = "Usuario o contraseña invalida";
            }
            else if (intOpcion == 1 && strEstadoUsuario == "I")
            {
                msgBox1.alert("EL usuario se encuentra inactivo");
                retorno = false;
            }
            else if (intOpcion == 1 && strEstadoUsuario == "B")
            {
                msgBox1.alert("EL usuario se encuentra Bloqueado por intentos fallidos");
                retorno = false;
            }
            else if (intOpcion == 1 && strEstadoUsuario == "A")
            {
                //crearContextItems();
                FormsAuthentication.SetAuthCookie(strNombreusuario, false);
                Server.Transfer("admin/Default.aspx");
                retorno = true;
                //Response.Redirect("admin/VerificarNit.aspx");
            }


            //if (Usuario.Equals("admin") && Contrasena.Equals("123"))
            //    return true;
            return retorno;
        }
    }
}
